/*
 * main.c
 *
 *  Created on: 21/03/2011
 *      Author: joao
 */

#include <stdio.h>

#include "fila.h"

int main(){
	FILE *arq, *arq2;
	char nome[20];
	int numero_de_cidades, numero_de_testes, i, j, cid, c, cont;
	int d[MAX];

	Fila fila;

	InicializaFila (&fila);

	printf("Digite o nome do arquivo c/ a matriz:");
	scanf("%s",nome);
	arq = fopen(nome,"r");

	if(arq == NULL){
	printf("Erro na abertura do arquivo");
	return 1;
	}

	fscanf(arq,"%d",&numero_de_cidades);
	int mat[numero_de_cidades][numero_de_cidades];

//	printf("%d", numero_de_cidades);

	for (i=0; i<numero_de_cidades; i++){
		for (j=0; j<numero_de_cidades; j++){
			fscanf(arq,"%d", &mat[i][j]);
		}
	}

/*	for (i=0; i<numero_de_cidades; i++){
			for (j=0; j<numero_de_cidades; j++){
				printf("%d", mat[i][j]);
			}
		}
*/
	fscanf(arq,"%d",&numero_de_testes);
//	printf("%d", numero_de_testes);

	/* abre o arquivo de saida para escrita(”w”) */
	if((arq2=fopen("saida.txt","w"))==NULL){
		printf("Erro na abertura do arquivo");
		return 1;
	}

	/* calcula distancias */
	for(cid=0; cid<numero_de_testes; cid++){
		fscanf(arq,"%d",&c);

		j=0;
		while(j<numero_de_cidades){
			d[j]=-1;
			j = j+1;
		}
		d[c]=0;

		InsereFila(c, &fila);

		while(FilaVazia(&fila) != 1){
			i = BuscaInicio(&fila);
			RemoveFila(&fila);
			j=0;
			while(j<6){
				if(mat[i][j] == 1 && d[j]==-1){
					d[j] = d[i]+1;
					InsereFila(j, &fila);
				}
				j= j+1;
			}
		}

		/*escreve na saida */
		fprintf(arq2, "Cidade %d\n", c);
		for(cont=0; cont<numero_de_cidades; cont++){
			fprintf(arq2, "%d %d\n",cont, d[cont]);
		}


	}

	return 0;

}
